Imports Leadtools
Imports Leadtools.ColorConversion
Public Sub IccProfileExtendedConstructorExample()
' load an Icc Profile
Dim iccProfile As New IccProfileExtended(Path.Combine(LEAD_VARS.ImagesDir, "ICCv42.icc"))
' create the new header
Dim header As IccHeader = IccHeader.Empty
header.CmmID = &H6170706C
header.DeviceClass = IccProfileClassType.DeviceLinkClass
header.ColorSpace = IccColorspaceType.LabData
header.Pcs = IccColorspaceType.LabData
header.ProfileSignature = &H61637370
header.Platform = IccPlatformSignatureType.MacintoshSignature
header.Flags = IccProfileFlags.None
header.Manufacturer = &H46464549
header.Model = 0
header.Attributes = IccProfileMediaFlags.ColorMedia
header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric
header.Creator = &H46464549
' set the system date/time as the date/time of the Icc Profile
Dim sysDateTime As System.DateTime = System.DateTime.Now
Dim iccDateTime As New IccDateTime(CUShort(sysDateTime.Year), _
CUShort(sysDateTime.Month), _
CUShort(sysDateTime.Day), _
CUShort(sysDateTime.Hour), _
CUShort(sysDateTime.Minute), _
CUShort(sysDateTime.Second))
header.DateTime = iccDateTime
' copy the tag data
Dim counter, numberOfTags As Integer
numberOfTags = iccProfile.TagList.Tags.Length
Dim tags(numberOfTags - 1) As IccTag
For counter = 0 To (numberOfTags - 1)
tags(counter) = New IccTag(iccProfile.TagList.Tags(counter).Signature, _
iccProfile.TagList.Tags(counter).Offset, _
iccProfile.TagList.Tags(counter).Size)
Next counter
Dim tagsList As New IccTagList(tags)
' copy the tag data
Dim tagData(iccProfile.TagData.Length - 1) As Byte
iccProfile.TagData.CopyTo(tagData, 0)
' create the new ICC profile, the Data array parameter will not be passed, because it will be
' updated when calling UpdateDataArray() method.
Dim newIccProfile As New IccProfileExtended(header, tagsList, tagData, Nothing)
' generate the profileId. For the time being, it will be filled with 0's
newIccProfile.GenerateProfileId()
' finally generate the new Icc Profile by updating the Data Array
' and then generating the file
newIccProfile.UpdateDataArray()
newIccProfile.GenerateIccFile(Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedConstructorVB.icc"))
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.ColorConversion;
public void IccProfileExtendedConstructorExample()
{
// load an Icc Profile
string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "ICCv42.icc");
IccProfileExtended iccProfile = new IccProfileExtended(IccfileName);
// create the new header
IccHeader header = IccHeader.Empty;
header.CmmID = 0x6170706C; // any CMM ID
header.DeviceClass = IccProfileClassType.DeviceLinkClass;
header.ColorSpace = IccColorspaceType.LabData;
header.Pcs = IccColorspaceType.LabData;
header.ProfileSignature = 0x61637370; // any profile signature
header.Platform = IccPlatformSignatureType.MacintoshSignature;
header.Flags = IccProfileFlags.None;
header.Manufacturer = 0x46464549; // any manufacturer
header.Model = 0x0; // any model
header.Attributes = IccProfileMediaFlags.ColorMedia;
header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric;
header.Creator = 0x46464549; // any creator
// set the system date/time as the date/time of the Icc Profile
System.DateTime sysDateTime = System.DateTime.Now;
IccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,
(ushort)sysDateTime.Month,
(ushort)sysDateTime.Day,
(ushort)sysDateTime.Hour,
(ushort)sysDateTime.Minute,
(ushort)sysDateTime.Second);
header.DateTime = iccDateTime;
// copy the tag list
int counter, numberOfTags;
numberOfTags = iccProfile.TagList.Tags.Length;
IccTag[] tags = new IccTag[numberOfTags];
for (counter = 0; counter < numberOfTags; counter++)
{
tags[counter] = new IccTag(iccProfile.TagList.Tags[counter].Signature,
iccProfile.TagList.Tags[counter].Offset,
iccProfile.TagList.Tags[counter].Size);
}
IccTagList tagList = new IccTagList(tags);
// copy the tag data
byte[] tagData = new byte[iccProfile.TagData.Length];
iccProfile.TagData.CopyTo(tagData, 0);
// create the new ICC profile, the Data array parameter will not be passed, because it will be
// updated when calling UpdateDataArray() method.
IccProfileExtended newIccProfile = new IccProfileExtended(header, tagList, tagData, null);
// generate the profileId. For the time being, it will be filled with 0's
newIccProfile.GenerateProfileId();
// finally generate the new Icc Profile by updating the Data Array
// and then generating the file
newIccProfile.UpdateDataArray();
string IccExtfile = Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedConstructorCS.icc");
newIccProfile.GenerateIccFile(IccExtfile);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}